import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '@/views/login/Login.vue'
import home from '@/views/home/home.vue'
import company from '@/views/home/company/company.vue'
import question from '@/views/home/question/question.vue'
import my from '@/views/home/my/my.vue'
import find from '@/views/home/company/company.vue'
import store from '@/store'
import {
  getLocal
} from '@/utils/local.js'
import {
  auInfo
} from '@/api/my.js'
Vue.use(VueRouter)

const routes = [{
    path: '/',
    redirect: '/Login'
  },
  {
    path: '/Login',
    component: Login
  },
  {
    path: '/home',
    component: home,
    children: [{
      path: '/home/company',
      component: company,
    }, {
      path: '/home/question',
      component: question,
      meta: {
        needLogin: true
      }
    }, {
      path: '/home/find',
      component: find,
    }, {
      path: '/home/my',
      component: my,
      meta: {
        //在需要登录的页面配置相应的路由元 后面用来判断
        needLogin: true
      }
    }]
  }
]

const router = new VueRouter({
  routes
})
//如果不需要登陆
//next()
//如果需要登陆
//     如果已登陆
//         next()
//     如果没登陆
//        如果没有token
//             跳转到登陆页
//        有token
//            调用接口获取用户信息,用户信息获取完成后保存到vuex
//            再next() 
//在这里设置导航守卫
//前置守卫
router.beforeEach((to, from, next) => { //导航守卫用来放行通道是否可以通过
  if (!to.meta.needLogin) { //如果路由元设置了可以不需要登录就可以通过  就直接放行
    next()
  } else {
    if (store.state.isLogin) { //如果验证了已经登录  就直接放行
      next()
    } else {
      if (!getLocal('token')) { //如果验证了没有登陆过 没有token 就跳转到登录页面
        next('/login')
      } else { //如果曾经登陆过 有token 就直接获取用户信息 设置用户信息 设置登录状态为ture 然后放行
        auInfo().then(res => {
          console.log('导航守卫获取的用户信息', res.data.data);
          store.commit('setUserInfo', res.data.data)
          store.commit('setIsLogin', true)
          next()
        })
      }
    }
  }
})

export default router
